﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AirTickets
{
    class Vuelo
    {
        string _codigo;
        DateTime _fecha_salida;
        DateTime _fecha_llegada;
        Avion _avion;
        Aeropuerto _aeropuerto_origen;
        Aeropuerto _aeropuerto_destino;
        List<Billete> _billetes;

        public Vuelo(string codigo, DateTime fecha_salida, DateTime fecha_llegada, Aeropuerto origen, Aeropuerto destino)
        {
            _avion = null;
            _codigo = codigo;
            _fecha_llegada = fecha_llegada;
            _fecha_salida = fecha_salida;
            _aeropuerto_origen = origen;
            _aeropuerto_destino = destino;
        }

        public Vuelo(
            string codigo, 
            DateTime fecha_salida, 
            DateTime fecha_llegada, 
            Aeropuerto origen, 
            Aeropuerto destino, 
            Avion avion):this(codigo, fecha_salida, fecha_llegada,origen, destino)
        {
            _avion = avion;
            InicializarBilletes();
            
        }

        public void AsignarAvion(Avion avion)
        {
            _avion = avion;
        }

        protected void InicializarBilletes()
        {
            _billetes = new List<Billete>();
            foreach (Asiento a in _avion.Asientos())
            {
                _billetes.Add(new Billete(this, a));

            }
        }

        public string Descriptor
        {
            get
            {
                return _aeropuerto_origen.Codigo + " "
                    + _aeropuerto_destino.Codigo + " " + _fecha_salida.ToString();
            }
        }

        public List<Billete> AsientosDisponibles()
        {
            return _billetes.Where(x => x.Estado == EstadoBillete.Disponible).ToList<Billete>();
        }
    }
}
